'''
W7
下载群文件里的access.log-20191117，通过正则表达式匹配，找出文件中所有访问记录里。访问次数最多的前10个IP，访问最频繁的前10个页面
这个题目的主要知识点是：文件io操作、正则表达式，列表排序以及函数的综合运用。
'''
import re
def log_ip_cnt(filename = 'access.log-20191119'):
    reg_ins = re.compile(r'(?P<ip>[\d.]+) - - \[(.*)\] "[^"]+" [\d ]+"[^"]+" "([^"]+)"', re.M)
    with open(filename, encoding='utf8') as f:
        ip_cnt = {}
        for v in f:
            _ip = reg_ins.match(v).groupdict()['ip']
            ip_cnt[_ip] = ip_cnt.get(_ip, 0) + 1
    return ip_cnt
ip_cnt = log_ip_cnt()
ans = sorted([(k, v) for k, v in ip_cnt.items()], key = lambda x:x[1], reverse= True)
print(ans[:10])
